micropython—访问和控制MicroPython
函数
1. micropython.const(expr)
函数说明: 用于声明该变量的值是一个常量,以便解释器可以优化它。
示例:
from micropython import const
CONST_X = const(123)
CONST_Y = const(2 * CONST_X + 1)
print(CONST_X)
print(CONST_Y)
运行结果:
123
247
使用 const 声明为一个常量后,它的值不可被更改。
示例:
新建一个文件,命名为test.py
from micropython import const
a = const(1)
a = 4
试图更改常量时,会出产生如下错误。
exec(open('test.py').read(),globals())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4, in <module>
SyntaxError: can't assign to expression
2. micropython.opt_level(level)
函数说明: 如果给定级别level,那么该函数将为后续的脚本解释执行设置优化级别。否则,它将返回当前的优化级别。
3. micropython.mem_info(level)
函数说明: 打印当前内存使用的情况(包括栈和堆的使用量)。
注意:
如果给出参数level(任何数据类型),则打印出更加详细的信息,它会打印整个堆,指示哪些内存块被使用,哪些内存是空闲的。
示例一: 不给参数
>>>micropython.mem_info()
stack: 736 out of 15360
GC: total: 48000, used: 7984, free: 40016
No. of 1-blocks: 72, 2-blocks: 31, max blk sz: 264, max free sz: 2492
>>>
示例二: 给定参数
>>>micropython.mem_info("level")
stack: 752 out of 15360
GC: total: 48000, used: 8400, free: 39600
No. of 1-blocks: 82, 2-blocks: 36, max blk sz: 264, max free sz: 2466
GC memory layout; from 3ffc4930:
00000: h=ShhBMh=DhBhDBBBBhAh===h===Ahh==h==============================
00400: ================================================================
00800: ================================================================
00c00: ================================================================
01000: =========================================hBh==Ah=ShShhThhAh=BhBh
01400: hhBhTShh=h==h=hh=Bh=BDhhh=hh=Bh=hh=Bh=BhBh=hh=hh=h===h=Bhh=h=BhB
01800: h=hh=h=Bh=hBh=h=hBh=h=hBh=h=h=hh=======h========================
01c00: ============================================Bh=hBhTh==hh=hh=Sh=h
02000: h==Bh=B..h...h==....h=..........................................
(37 lines all free)
0b800: ........................................................
>>>
4. micropython.qstr_info([verbose])
函数说明: 打印当前所有已使用的字符串在内存中的个数,占用内存大小等信息。
注意:
如果给出参数,则打印出具体的字符串信息。打印的信息是依赖于实际情况的,包括被录入的字符串数量和它们使用的RAM的数量。在详细模式中,它打印出所有字符串的名称。
示例一: 不给参数
>>>micropython.qstr_info()
qstr pool: n_pool=1, n_qstr=4, n_str_data_bytes=31, n_total_bytes=1135
>>>
示例二: 给定参数
>>>micropython.qstr_info("level")
qstr pool: n_pool=1, n_qstr=4, n_str_data_bytes=31, n_total_bytes=1135
Q(b)
Q(2)
Q(asdfa222)
Q(level)
>>>
5. micropython.stack_use()
函数说明: 返回一个整数,表示正在使用的堆栈的当前量。
示例:
>>>micropython.stack_use()
720
6. micropython.alloc_emergency_exception_buf(size)
函数说明: 设置紧急情况下的(栈溢出,普通RAM不足等)保险RAM分配,使在紧急情况下仍有RAM可用。
size:保险剩余RAM的大小,一般为100
7. micropython.heap_lock()
函数说明: 锁定堆,当堆被锁定时,任何操作都不会分配内存 。如果尝试内存分配操作,则会产生MemoryError错误。
注意:
一旦锁定堆,除非重新开机,否则其他有关堆区的操作都会出错。
8. micropython.heap_unlock()
函数说明:解锁堆
9. micropython.kbd_intr(chr)
函数说明: 在解释执行py文件时设置键盘中断响应。
示例:
#以下程序执行在py文件
import micropython
import time
micropython.kbd_intr(-1)
time.sleep(8)
micropython.kbd_intr(3)
#此时不会再响应键盘的ctrl+c,8秒钟后才可以响应
10. micropython.schedule(func, arg)
函数说明:这个函数通常是用在中断中,用于在退出中断时快速执行函数func。
func:在退出中断时需要快速执行的方法
arg:该方法的变量
示例:
>>> def testFunc(t):
... print("run now")
... time.sleep(t)
...
>>> micropython.schedule(testFunc, 1)
run now